/*******************************************************************************
 * Name    : KiBoolean.hpp
 * Date    : 01-14-2015
 * Author  : Sylvain Nieuwlandt -- nicholas.rush.developper@gmail.com
 ******************************************************************************/
#ifndef KIBOOLEAN_HPP
#define KIBOOLEAN_HPP

#include <kino/KiObject.hpp>

/**
 * The class which encapsulate the bool primitive type.
 */
class KiBoolean : public KiObject {
public :
  /** 
   * Static member which represents the True value.
   */
  static KiBoolean TRUE;

  /**
   * Static member which represents the False value.
   */
  static KiBoolean FALSE;

  /**
   * Destructor of the class.
   *
   * Destroy the calling object
   */
  virtual ~KiBoolean();
  
  /**
   * Operator != on KiBoolean.
   * 
   * Return true if b1 != b2.
   */
  bool operator!= (const KiBoolean& b2);

  /**
   * Return the primitive value of the calling objects.
   *
   * \return the true of false value (depending on the object)
   */
  virtual bool getPrimitiveValue();
  
  bool operator== (const KiBoolean& b2);
    

private:
  bool m_value;

  KiBoolean(bool value);
};

#endif
